//package com.bsj.sipgateway.common.dynamicDataSource;
//
//import com.alibaba.druid.pool.DruidDataSource;
//import lombok.extern.slf4j.Slf4j;
//
//import java.util.Map;
//
//@Slf4j
//public class DynamicDataSource extends CustomAbstractRoutingDataSource {
//
//    @Override
//    protected Object determineCurrentLookupKey() {
//        String datasource = DataSourceContextHolder.getDbType();
////        log.info("使用数据源 {}", datasource);
//        return datasource;
//    }
//
//
//    /**
//     * 添加数据源
//     *
//     * @param key             标识数据源
//     * @param username
//     * @param password
//     * @param url
//     * @param driverClassName
//     */
//    public void addDataSource(String key, String username, String password, String url, String driverClassName) {
//        DruidDataSource dataSource = new DruidDataSource();
//        dataSource.setUsername(username);
//        dataSource.setPassword(password);
//        dataSource.setUrl(url);
//        dataSource.setDriverClassName(driverClassName);
//        addDataSource(key, dataSource);
//    }
//
//    /**
//     * 添加数据源
//     *
//     * @param key
//     * @param dataSource
//     */
//    @Override
//    public void addDataSource(String key, Object dataSource) {
//        Map<Object, Object> targetDataSources = getTargetDataSources();
//
//        synchronized (this) {
//            if (null != targetDataSources) {
//                targetDataSources.putIfAbsent(key, dataSource);
//            }
//            //刷新生效
//            afterPropertiesSet();
//        }
//    }
//
//    /**
//     * 删除数据源
//     *
//     * @param key
//     */
//    @Override
//    public void removeDataSource(String key) {
//        Map<Object, Object> targetDataSources = getTargetDataSources();
//        synchronized (this) {
//            if (null != targetDataSources) {
//                if (targetDataSources.get(key) != null) {
//                    DruidDataSource druidDataSource = (DruidDataSource) targetDataSources.get(key);
//                    druidDataSource.close();
//                    targetDataSources.keySet().removeIf(v -> v == key);
//                }
//            }
//            //刷新生效
//            afterPropertiesSet();
//        }
//    }
//
//}